import time

import requests

from contant.gaode import *


class GaodeFenceTerminalService:
    @classmethod
    def bind_fence_terminal(cls, sid: str, gfid: str, tids: str):
        """
        新增监测对象
        :param sid: 服务编号
        :param gfid: 围栏编码
        :param tids: 终端编码 支持一次添加多个终端tid，以“，”分割。单次最多支持100个，如超出将只截取前100个作为输入。
        :return: 接口调用结果
        """
        post_data = {
            'key': GAODE_KEY,
            'sid': sid,
            'gfid': gfid,
            'tids': tids
        }
        # 发送HTTP请求
        response = requests.post(GAODE_FENCE_TERMINAL_BIND, data=post_data)
        # 解析JSON响应
        data = response.json()
        return data

    @classmethod
    def unbind_fence_terminal(cls, sid: str, gfid: str, tids: str):
        """
        删除监测对象
        :param sid: 服务编号
        :param gfid: 围栏编码
        :param tids: 终端编码 1.支持一次传入多个终端tid，以“，”分割。单次最多支持100个，如超出将只截取前100个作为输入。2.可以传入 "#all" 删除所有
        :return: 接口调用结果
        """
        post_data = {
            'key': GAODE_KEY,
            'sid': sid,
            'gfid': gfid,
            'tids': tids
        }
        # 发送HTTP请求
        response = requests.post(GAODE_FENCE_TERMINAL_UNBIND, data=post_data)
        # 解析JSON响应
        data = response.json()
        return data

    @classmethod
    def query_fence_terminal(cls, sid: str, gfid: str):
        """
        查询监测对象
        :param sid: 服务编号
        :param gfid: 围栏编码
        :return: 接口调用结果
        """
        post_data = {
            'key': GAODE_KEY,
            'sid': sid,
            'gfid': gfid
        }
        # 发送HTTP请求
        response = requests.get(GAODE_FENCE_TERMINAL_LIST, params=post_data)
        # 解析JSON响应
        data = response.json()
        return data

    @classmethod
    def query_fence_terminal_status(cls, sid: str, tid: str, gfids: str):
        """
        查询检测对象与围栏关系
        :param sid: 服务编号
        :param tid: 监控对象终端id
        :param gfids: 围栏编码
        如传入，则只判断该监控对象与 gfids 所指定的围栏的关系，不分页（忽略 page 和 pagesize 参数）；
        如不传，则判断该监控对象与所有绑定围栏的关系（分页返回）
        :return: 接口调用结果
        """
        current_timestamp = int(time.time())
        print(current_timestamp)
        post_data = {
            'key': GAODE_KEY,
            'sid': sid,
            'tid': tid,
            'gfids': gfids
        }
        # 发送HTTP请求
        response = requests.get(GAODE_FENCE_TERMINAL_STATUS, params=post_data)
        # 解析JSON响应
        data = response.json()
        return data

    @classmethod
    def query_fence_location_status(cls, sid: str, location: str, gfids: str):
        """
        查询指定坐标与围栏关系
        :param sid: 服务编号
        :param location: 指定坐标
        :param gfids: 围栏编码
        如传入，则只判断该监控对象与 gfids 所指定的围栏的关系，不分页（忽略 page 和 pagesize 参数）；
        如不传，则判断该监控对象与所有绑定围栏的关系（分页返回）
        :return: 接口调用结果
        """
        current_timestamp = int(time.time())
        print(current_timestamp)
        post_data = {
            'key': GAODE_KEY,
            'sid': sid,
            'location': location,
            'gfids': gfids
        }
        # 发送HTTP请求
        response = requests.get(GAODE_FENCE_LOCATION_STATUS, params=post_data)
        # 解析JSON响应
        data = response.json()
        return data
